home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / SAMPLES / CAMERA / CAMS / COMCAMS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  2.4 KB  |  71 lines

  1. /* $Id: COMCamS.h 1.1 1996/07/18 23:54:48 Damien Exp $ */
  2.  
  3. //
  4. // COM Example of a Spherical Camera
  5. //
  6. // Copyright (C) 1995, Ray Dream, Inc. All rights reserved.
  7. //
  8.  
  9. #ifndef __COMCAMS__
  10. #define __COMCAMS__  
  11.  
  12. #ifndef __I3DEXCAM__
  13. #include "I3DExCam.h"
  14. #endif
  15.                   
  16. // SphereCamera GUID : 
  17. DEFINE_GUID(CLSID_SphereCamera, 0x36890000L, 0x6E9C, 0x101C, 0xB8, 0x01, 0x04, 0x02, 0x1C, 0x00, 0x70, 0x02);
  18.  
  19.  
  20. typedef struct CameraData {
  21.   short fZoomCoef;
  22.   short fAngle;
  23.   } CameraData;
  24.  
  25.  
  26. // Spherical Camera Object :
  27. #undef INTERFACE
  28. #define INTERFACE SphereCamera
  29. class SphereCamera : public I3DExCamera {
  30. public :  
  31.   SphereCamera();
  32.   ~SphereCamera();
  33.   
  34.   // IUnknown Interface :
  35.   STDMETHODIMP         QueryInterface(THIS_ REFIID riid, LPVOID* ppvObj);
  36.   STDMETHODIMP_(ULONG) AddRef(THIS);
  37.   STDMETHODIMP_(ULONG) Release(THIS);
  38.   
  39.   // I3DExtension method :
  40.   STDMETHODIMP_(I3DExtension*) Clone(THIS);
  41.   STDMETHODIMP                 ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);  
  42.   
  43.   // I3DExDataExchanger methods :
  44.   STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
  45.   STDMETHODIMP_(void*)            GetExtensionDataBuffer(THIS);
  46.   STDMETHODIMP                     ExtensionDataChanged(THIS);
  47.   STDMETHODIMP                     HandleEvent(THIS_ ULONG sourceID);
  48.   STDMETHODIMP_(short)            GetResID(THIS);
  49.   
  50.   // I3DExCamera methods
  51.   STDMETHODIMP           SetTransform(THIS_ TRANSFORM3D* transform);
  52.   STDMETHODIMP_(BOOLEAN) CreateRay(THIS_ VECTOR2D* screenPosition, VECTOR3D* resultOrigin, VECTOR3D* resultDirection);
  53.   STDMETHODIMP_(BOOLEAN) Project3DTo2D(THIS_ VECTOR3D* position,VECTOR2D* resultScreenPosition, NUM3D* resultDistanceToScreen);
  54.     STDMETHODIMP_(ULONG)     GetPrimitiveID(THIS);
  55.     STDMETHODIMP_(ULONG)   Clip3D(THIS_ FACET3D* localFacet, VERTEX3D* localVertices,
  56.                                                                       FACET3D* cameraFacet, VERTEX3D* cameraVertices,
  57.                                                                           NUM3D* clipBox);
  58.     STDMETHODIMP_(BOOLEAN) ClipLine3D(THIS_ VECTOR3D* P1, VECTOR3D* P2);
  59.  
  60. private :
  61.   TRANSFORM3D  fTransform; // Transformation Data (Local to Global and Global to Local)
  62.   ULONG        fCRef;      // reference Counter
  63.   CameraData   fData;      // Camera Data Zoom and Angle
  64.   NUM3D        Coef;       // Preprocessed Coefficient factor
  65.   NUM3D        QuickAngle,QuickZoom;  // QuickFix values of Zoom and Angle in the Camera Data
  66.   };
  67.                           
  68.  
  69.  
  70. #endif // __COMCAM__
  71.